package cn.iocoder.yudao.module.system.controller.admin.dept.vo.jd;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 订单新增/修改 Request VO")
@Data
public class OrderSaveReqVO {

    @Schema(description = "订单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6093")
    private Long orderId;

    @Schema(description = "店铺id", example = "15430")
    private Long shopId;

    @Schema(description = "产品名称,多个产品将会以逗号隔开", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "产品名称,多个产品将会以逗号隔开不能为空")
    private String prodName;

    @Schema(description = "订购用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18726")
    @NotEmpty(message = "订购用户ID不能为空")
    private String userId;

    @Schema(description = "订购流水号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "订购流水号不能为空")
    private String orderNumber;

    @Schema(description = "总值", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "总值不能为空")
    private BigDecimal total;

    @Schema(description = "实际总值")
    private BigDecimal actualTotal;

    @Schema(description = "支付方式 0 手动代付 1 微信支付 2 支付宝", example = "2")
    private Integer payType;

    @Schema(description = "订单备注")
    private String remarks;

    @Schema(description = "订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6:失败", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6:失败不能为空")
    private Integer status;

    @Schema(description = "配送类型", example = "1")
    private String dvyType;

    @Schema(description = "配送方式ID", example = "11742")
    private Long dvyId;

    @Schema(description = "物流单号", example = "7375")
    private String dvyFlowId;

    @Schema(description = "订单运费")
    private BigDecimal freightAmount;

    @Schema(description = "用户订单地址Id", example = "32603")
    private Long addrOrderId;

    @Schema(description = "订单商品总数")
    private Integer productNums;

    @Schema(description = "付款时间")
    private LocalDateTime payTime;

    @Schema(description = "发货时间")
    private LocalDateTime dvyTime;

    @Schema(description = "完成时间")
    private LocalDateTime finallyTime;

    @Schema(description = "取消时间")
    private LocalDateTime cancelTime;

    @Schema(description = "是否已经支付，1：已经支付过，0：，没有支付过")
    private Boolean isPayed;

    @Schema(description = "用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除", example = "2")
    private Integer deleteStatus;

    @Schema(description = "0:默认,1:在处理,2:处理完成")
    private Integer refundSts;

    @Schema(description = "优惠总额")
    private BigDecimal reduceAmount;

    @Schema(description = "订单类型", example = "1")
    private Integer orderType;

    @Schema(description = "订单关闭原因 1-超时未支付 2-退款关闭 4-买家取消 15-已通过货到付款交易", example = "2")
    private Integer closeType;

}